package com.vdn.commons.swagger;

import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Contact;
import io.swagger.v3.oas.models.info.Info;
import org.springdoc.core.models.GroupedOpenApi;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;


/**
 * Swagger配置
 */
@Configuration
public class SwaggerConfig {

    /**
     * 配置用户API的分组信息
     * 此方法定义了Swagger/OpenAPI的分组，指定哪些路径和包应该被扫描以生成API文档
     *
     * @return GroupedOpenApi 实例，包含分组的配置信息
     */
    @Bean
    public GroupedOpenApi userApi() {
        // 定义需要匹配的路径，"/**"表示匹配所有路径
        String[] paths = {"/**"};
        // 定义需要扫描的包，用于发现API接口
        String[] packagedToMatch = {"com.vdn"};
        // 构建并返回GroupedOpenApi实例
        return GroupedOpenApi.builder().group("default")
                .pathsToMatch(paths)
                .packagesToScan(packagedToMatch).build();
    }

    /**
     * 配置自定义的OpenAPI信息
     * 此方法定义了API文档的全局信息，如标题、描述、联系人等
     *
     * @return OpenAPI 实例，包含API文档的全局配置信息
     */
    @Bean
    public OpenAPI customOpenAPI() {
        // 创建联系人信息
        Contact contact = new Contact();
        contact.setName("VDN");

        // 构建并返回OpenAPI实例，包含API文档的全局信息
        return new OpenAPI().info(new Info()
                .title("VDN")
                .description("接口文档")
                .contact(contact)
                .version("1.0"));
    }
}
